/********************************************************************************
    * 文件名称 ：E53_SC1.c
    * 作     者：小熊派开源社区
    * 版     本：V1.0
    * 编写日期 ：2019-5-27
    * 功     能：E53_SC1扩展板驱动
*********************************************************************************
    * 说    明 ：本例程配套小熊派开源社区开发板使用
    *
    * 淘     宝：https://shop336827451.taobao.com/
    * 微信公众号：小熊派开源社区
*********************************************************************************/

#include "E53_SC1.h"
#include "stm32l4xx.h"
#include "i2c.h"


uint8_t BUF[2];
int result;


/***************************************************************
* 函数名称: Init_BH1750
* 说    明: 写命令初始化BH1750
* 参    数: 无
* 返 回 值: 无
***************************************************************/
static void Init_BH1750(void)
{
    uint8_t t_Data = 0x01;
    HAL_I2C_Master_Transmit(&hi2c1, BH1750_Addr, &t_Data, 1, 0xff);
}

/***************************************************************
* 函数名称: Start_BH1750
* 说    明: 启动BH1750
* 参    数: 无
* 返 回 值: 无
***************************************************************/
static void Start_BH1750(void)
{
    uint8_t t_Data = 0x10;
    HAL_I2C_Master_Transmit(&hi2c1, BH1750_Addr, &t_Data, 1, 0xff);
}
/***************************************************************
* 函数名称: E53_SC1_Init
* 说    明: 初始化E53_SC1扩展板
* 参    数: 无
* 返 回 值: 无
***************************************************************/
void E53_SC1_Init(void)
{
    Init_BH1750();
}
/***************************************************************
* 函数名称: E53_SC1_Read_Data
* 说    明: 测量光照强度
* 参    数: 无
* 返 回 值: 无
***************************************************************/
void E53_SC1_Read_Data(E53_SC1_Data *ReadData)
{
    int result;
    Start_BH1750();
    HAL_Delay(180);
    HAL_I2C_Master_Receive(&hi2c1, BH1750_Addr + 1, BUF, 2, 0xff);
    result = BUF[0];
    result = (result << 8) + BUF[1];  //合成数据，即光照数据
    ReadData->Lux = (float)(result / 1.2);
}
/***************************************************************
* 函数名称: E53_SC1_Light_Set
* 说    明: 灯状态设置
* 参    数: status,ENUM枚举的数据
*                                    OFF,光灯
*                                    ON,开灯
* 返 回 值: 无
***************************************************************/
void E53_SC1_Light_Set(E53_SC1_Status status)
{
    if (status == ON)
        HAL_GPIO_WritePin(E53_GPIO2_GPIO_Port, E53_GPIO2_Pin, GPIO_PIN_SET);
    if (status == OFF)
        HAL_GPIO_WritePin(E53_GPIO2_GPIO_Port, E53_GPIO2_Pin, GPIO_PIN_RESET);
}
